package org.jutils.ui.explorer;

import java.io.File;
import java.util.Arrays;

import javax.swing.Icon;
import javax.swing.ImageIcon;

/*******************************************************************************
 *****************************************************************************/
public class ProgramData implements Comparable<Object>
{
    private byte [] iconData;

    private String name;

    private String path;

    private String args;

    /***************************************************************************
     * 
     **************************************************************************/
    public ProgramData()
    {
    }

    /***************************************************************************
     * @return
     **************************************************************************/
    public String getName()
    {
        return name;
    }

    /***************************************************************************
     * @param programName
     **************************************************************************/
    public void setName( String programName )
    {
        name = programName;
    }

    /***************************************************************************
     * @return
     **************************************************************************/
    public File getPath()
    {
        return new File( path );
    }

    /***************************************************************************
     * @param programPath
     **************************************************************************/
    public void setPath( File programPath )
    {
        path = programPath.getAbsolutePath();
    }

    /***************************************************************************
     * @return
     **************************************************************************/
    public String getArguments()
    {
        return args;
    }

    /***************************************************************************
     * @param programArguments
     **************************************************************************/
    public void setArguments( String programArguments )
    {
        args = programArguments;
    }

    /***************************************************************************
     * 
     **************************************************************************/
    @Override
    public String toString()
    {
        return name;
    }

    /***************************************************************************
     * 
     **************************************************************************/
    @Override
    public int compareTo( Object obj )
    {
        return name.compareToIgnoreCase( obj.toString() );
    }

    /***************************************************************************
     * 
     **************************************************************************/
    @Override
    public int hashCode()
    {
        return name.hashCode();
    }

    /***************************************************************************
     * 
     **************************************************************************/
    @Override
    public boolean equals( Object obj )
    {
        return compareTo( obj ) == 0;
    }

    /***************************************************************************
     * @return
     **************************************************************************/
    public Icon getIcon()
    {
        return new ImageIcon( iconData );
    }

    /***************************************************************************
     * @param data
     **************************************************************************/
    public void setIconData( byte [] data )
    {
        iconData = Arrays.copyOf( data, data.length );
    }
}
